package com.tomclaw.mandarin.util;
import android.text.TextUtils;
import android.util.Pair;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
/**
* Created by Solkin on 28.09.2014.
*/
public class HttpParamsBuilder extends ArrayList<Pair<String, String>> {
private static final String AMP = "&";
private static final String EQUAL = "=";
public HttpParamsBuilder() {
}
private HttpParamsBuilder(Collection<? extends Pair<String, String>> c) {
super(c);
}
public HttpParamsBuilder appendParam(String key, String value) {
add(new Pair<>(key, value));
return this;
}
public HttpParamsBuilder appendParamNonEmpty(String title, String value) {
if (!TextUtils.isEmpty(value)) {
appendParam(title, value);
}
return this;
}
public void sortParams() {
Collections.sort(this, new Comparator<Pair<String, String>>() {
@Override
public int compare(Pair<String, String> lhs, Pair<String, String> rhs) {
return lhs.first.compareTo(rhs.first);
}
});
}
/**
* Builds Url request string from specified parameters.
*
* @return String - Url request parameters.
* @throws java.io.UnsupportedEncodingException
*/
public String build() throws UnsupportedEncodingException {
StringBuilder builder = new StringBuilder();
// Perform pair concatenation.
for (Pair<String, String> pair : this) {
if (builder.length() > 0) {
builder.append(AMP);
}
builder.append(pair.first)
.append(EQUAL)
.append(StringUtil.urlEncode(pair.second));
}
return builder.toString();
}
public void reset() {
clear();
}
public static HttpParamsBuilder emptyParams() {
return new HttpParamsBuilder(Collections.<Pair<String, String>>emptyList());
}
}